package com.hzlh.utils;

import com.alibaba.fastjson.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Map;

public class AddressUtil {

    /**
     * 逆地理编码 获取乡镇名称
     */
    public static Map<String,String> getAddressDetail(double lng, double lat) {
        String result = "";// 访问返回结果
        BufferedReader read = null;// 读取访问结果
        String district = "";//区名称
        String town = "";//城镇名称
        String regionScope = "";//城镇范围
        Map<String, String> map = new HashMap<>();

        String url = "http://api.map.baidu.com/reverse_geocoding/v3/";
        String param = "ak=SfrwGH7INvjPq7BwCrYrioBQZm9XXxrR&output=json&coordtype=wgs84ll&extensions_town=true" +
                "&location=" + lat + "," + lng;
        //System.out.println("访问地址：" + url + "?" + param);
        try {
            // 创建url
            URL realurl = new URL(url + "?" + param);
            // 打开连接
            URLConnection connection = realurl.openConnection();
            // 设置通用的请求属性
            connection.setRequestProperty("accept", "*/*");
            connection.setRequestProperty("connection", "Keep-Alive");
            connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 建立连接
            connection.connect();
            // 获取所有响应头字段
//			Map<String, List<String>> map = connection.getHeaderFields();
//			// 遍历所有的响应头字段，获取到cookies等
//			for (String key : map.keySet()) {
//				System.out.println(key + "--->" + map.get(key));
//			}
            // 定义 BufferedReader输入流来读取URL的响应
            read = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
            String line;// 循环读取
            while ((line = read.readLine()) != null) {
                result += line;
            }

            //不为空，解析处城镇名称
            if (!"".equals(result)) {
                JSONObject jsonInfo = JSONObject.parseObject(result);
                System.out.println(result);
                JSONObject jsonObject = JSONObject.parseObject(JSONObject.parseObject(jsonInfo.getString("result")).getString("addressComponent"));
                district = jsonObject.getString("district").toString();
                town = jsonObject.getString("town").toString();
                regionScope = JSONObject.parseObject(jsonInfo.getString("result")).getString("formatted_address");
                System.out.println(regionScope);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (read != null) {// 关闭流
                try {
                    read.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        map.put("district",district);
        map.put("town",town);
        return map;
    }
}
